package fr.univ.colloque.servlet;

import fr.univ.colloque.dao.ExposeDao;
import fr.univ.colloque.dao.PersonneDao;
import fr.univ.colloque.data.Expose;
import fr.univ.colloque.data.Personne;
import fr.univ.colloque.util.Link;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ModifierEvaluateur extends HttpServlet
{
    // Message d'erreur

    private static String ERR_EVAL_ABS = "Vous devez choisir un évaluateur.";

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        HttpSession session = req.getSession();

        Link lien = Link.FORM_MODIFIER_EVALUATEUR;

        Personne connecte = (Personne) session.getAttribute("user");

        if (connecte == null || !lien.getType().equals(connecte.getType()))
        {
            // La personne connecté n'a pas les droits nécessaires pour accéder à cette page
            resp.sendRedirect("indexCo.jsp?e=1");
        }
        else
        {
            String idExpoStr = req.getParameter("idE");

            ExposeDao eDao = new ExposeDao();
            PersonneDao pDao = new PersonneDao();

            List<Personne> listEvalLibre = new ArrayList<Personne>();

            try
            {
                int idExpo = Integer.parseInt(idExpoStr);
                Expose expo = eDao.get(idExpo, true, false);
                session.setAttribute("expose", expo);
                listEvalLibre = pDao.getEvaluateurLibre(expo.getColloc().getId());
            }
            catch (NumberFormatException nex)
            {
            }

            session.setAttribute("lPers", listEvalLibre);
            req.setAttribute("page", lien);

            req.getRequestDispatcher("indexCo.jsp").forward(req, resp);
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        String eval = req.getParameter("choix");
        String expo = req.getParameter("idE");
        String idPerso = req.getParameter("idP");

        Integer idEval = null;

        boolean erreur = false;
        List<String> listErr = new ArrayList<String>();

        if (eval == null)
        {
            erreur = true;
            listErr.add(ERR_EVAL_ABS);
        }
        else
        {
            idEval = Integer.parseInt(eval);
        }

        int idExpo = Integer.parseInt(expo);
        int idOldEval = -1;
        // Test si il y a deja un eval affecté
        if (idPerso != null && !"".equals(idPerso))
        {
            idOldEval = Integer.parseInt(idPerso);
        }

        if (erreur)
        {
            Link lien = Link.FORM_MODIFIER_EVALUATEUR;

            req.setAttribute("err", listErr);
            req.setAttribute("page", lien);

            req.getRequestDispatcher("indexCo.jsp").forward(req, resp);
        }
        else
        {
            PersonneDao pDao = new PersonneDao();

            if (idOldEval == -1)
            {
                // Pas d'ancien eval donc c'est un ajout d'evaluateur
                pDao.ajouterEvaluateur(idEval, idExpo);
            }
            else
            {
                // un eval est déjà present donc on le remplace par le nouveau
                pDao.majEvaluateur(idEval, idOldEval, idExpo);
            }

            ExposeDao eDao = new ExposeDao();
            Expose e = eDao.get(idExpo, false, false);

            HttpSession session = req.getSession();
            session.removeAttribute("lPers");
            session.removeAttribute("expose");

            // on redirige vers la liste maj des eval de l expo 
            resp.sendRedirect("ListeComiteColloque?id=" + e.getColloc().getId());
        }
    }
}
